package br.unicamp.ic.sgct.server.dominio.entidades;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.TableGenerator;

import br.unicamp.ic.sgct.client.dominio.to.SalaTO;

//import it.biobytes.ammentos.AutomaticType;
//import it.biobytes.ammentos.PersistentEntity;
//import it.biobytes.ammentos.PersistentField;

@SuppressWarnings("serial")
//@PersistentEntity(sourceDomain = "T_SALA", primaryKey = "id_sala")
@Entity
@Table(name="T_SALA")
@TableGenerator(name = "SALA_GEN", allocationSize = 1, initialValue = 1, table = "T_ID", 
		pkColumnName = "key", valueColumnName = "valor", pkColumnValue = "ID_SALA")
public class Sala implements Serializable {
	//@PersistentField(fieldName="id_sala", automatic=true, automaticType=AutomaticType.FRAMEWORK)
	@Id
	@Column(name="id_sala")
	@GeneratedValue(strategy = GenerationType.TABLE, generator = "SALA_GEN")
	private long id;

	//@PersistentField(size="15")
	@Column(length=15)	
	private String identificacao;

	//@PersistentField
	@Column	
	private int capacidade;

        @ManyToOne(fetch = FetchType.LAZY)
        @JoinColumn(name = "id_cconv", nullable = false)
	private CentroConvencao centroConvencao;

	public Sala() {
		super();
	}

	public Sala(String identificacao, int capacidade) {
		super();
		this.identificacao = identificacao;
		this.capacidade = capacidade;
	}

	public long getId() {
		return id;
	}

	public void setId(long id) {
		this.id = id;
	}

	public String getIdentificacao() {
		return identificacao;
	}

	public void setIdentificacao(String identificacao) {
		this.identificacao = identificacao;
	}

	public int getCapacidade() {
		return capacidade;
	}

	public void setCapacidade(int capacidade) {
		this.capacidade = capacidade;
	}

	/**
	 * Constructs a <code>String</code> with all attributes
	 * in name = value format.
	 *
	 * @return a <code>String</code> representation 
	 * of this object.
	 */
	public String toString()
	{
	    final String TAB = "    ";
	    
	    String retValue = "";
	    
	    retValue = "Sala ( "
	        + super.toString() + TAB
	        + "id = " + this.id + TAB
	        + "identificacao = " + this.identificacao + TAB
	        + "capacidade = " + this.capacidade + TAB
	        + " )";
	
	    return retValue;
	}
	
	
	public SalaTO getTo(){
		SalaTO to = new SalaTO();
		to.setCapacidade(capacidade);
		to.setId(id);
		to.setIdentificacao(identificacao);
		return to;
	}
}